#include<bits/stdc++.h>
using namespace std;
// #define int long long
int dp[2][1005];
int n,m,kmp[1005],nxt[1005][27];
string s,t;
signed main(){
	freopen("neck.in","r",stdin);
	freopen("neck.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	cin>>s>>t;n=s.size();m=t.size();
	t=" "+t;s=" "+s;
	kmp[0]=kmp[1]=0;nxt[1][t[1]-'a']=nxt[0][t[1]-'a']=1;
	for(int i=2;i<=m;i++){
		int j=kmp[i-1];
		while(j&&t[j+1]!=t[i])j=kmp[j];
		if(t[j+1]==t[i])j++;
		kmp[i]=j;
		nxt[i-1][t[i]-'a']=i;
		for(int j=0;j<26;j++)nxt[i][j]=nxt[kmp[i]][j];
	}
	// for(int i=1;i<=m;i++)cout<<kmp[i]<<" ";
	// cout<<"\n";
	bool T=0;
	for(int i=0;i<=m;i++)dp[0][i]=0x3f3f3f3f;
	dp[0][0]=0;
	for(int i=1;i<=n;i++){
		memset(dp[T^1],0x3f,sizeof(dp[T^1]));
		for(int j=0;j<m;j++){
			dp[T^1][j]=min(dp[T^1][j],dp[T][j]+1);
			dp[T^1][nxt[j][s[i]-'a']]=min(dp[T^1][nxt[j][s[i]-'a']],dp[T][j]);
		}T^=1;
	}
	int ans=0x3f3f3f3f;
	for(int i=0;i<m;i++)ans=min(ans,dp[T][i]);
	cout<<n-ans<<"\n";
	return 0;
}